package com.example.config;

import com.example.interceptor.CustomClientHttpRequestInterceptor;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

import java.time.Duration;

/**
 * @Description: TODO
 * @Author runto
 * @Date 2023/11/11 22:21
 * @PackageName:com.example.config
 * @ClassName: RestTemplateConfig
 * @Version 1.0
 */
@Configuration
public class RestTemplateConfig {
    /**
     * 使用RestTemplateBuilder构造类来构造一个RestTemplate，
     * 自定义一些连接参数，如：连接超时时间，读取超时时间，还有认证信息等
     * @param builder
     * @return
     */
    @Bean
    public RestTemplate restTemplate(RestTemplateBuilder builder){
        return builder
                //设置连接超时时间
                .setConnectTimeout(Duration.ofSeconds(5000))
                //设置读取超时时间
                .setReadTimeout(Duration.ofSeconds(5000))
                //设置认证信息
//                .basicAuthentication("username","password")
                //设置根路径
//                .rootUri("https://api.test.com/")
                //构建
                .build();
    }

    /**
     * 添加自定义拦截器，构造带有自定义拦截器的RestTemplate实例
     * @param builder
     * @return
     */
    @Bean
    public RestTemplate restTemplate1(RestTemplateBuilder builder){
        return builder
                .additionalInterceptors(new CustomClientHttpRequestInterceptor())
                //构建
                .build();
    }
}
